// 基础响应类型（统一前后端接口格式，用于除登录外的其他接口）
export interface ApiResponse<T = any> {
  code: number;
  message: string;
  data: T;
}

// 登录请求参数
export interface LoginRequest {
  WorkId: string;
  Password: string;
}

// 登录接口后端返回格式（与后端实际返回完全一致）
export interface LoginBackendResponse {
  message: string;  // 后端返回的是小写 message
  token: string;    // 后端返回的是小写 token
  user: UserInfo;   // 后端返回的是小写 user
}

// 用户信息接口（关键：角色字段改为小写 role，与后端一致）
export interface UserInfo {
  workId: string;   // 后端返回的是 workId（小写 w）
  userName: string; // 后端返回的是 userName
  role: string; // 角色：管理员/商家/教职工
  [key: string]: any;    // 后端返回的是 role（小写 r）
  email?: string;
  isFirstLogin?: boolean;
}

export interface ResetPasswordRequest {
  WorkId: string;
  Email: string;
}

export interface ChangePasswordRequest {
  WorkId: string;
  OldPassword: string;
  NewPassword: string;
}

export interface AdminStats {
  teacherCount: number;
  merchantCount: number;
  diningCountToday: number;
}

export interface Dish {
  dishId: number;
  name: string;
  price: number;
  type: string;
  sales: number;
  status: number;
  merchantId?: string;
}

export interface MerchantSales {
  salesAmount: number;
  orderCount: number;
}

export interface ReconciliationApply {
  applyId: string;
  startTime: string;
  endTime: string;
  amount: number;
  status: number;
  auditTime?: string;
  adminName?: string;
}

export interface DiningAmount {
  totalAmount: number;
}

// 教师信息类型（与数据库teacher表对应，只保留一个定义）
export interface Teacher {
  teacherId: string;       // 教职工ID（工号，必填）
  name: string;            // 姓名（必填）
  gender?: string;         // 性别（可选，数据库允许为NULL）
  department?: string;     // 所属部门（可选）
  phone: string;           // 手机号（必填）
  email?: string;          // 邮箱（可选）
  password?: string;       // 密码（前端不展示）
  status: number;          // 状态（0-禁用，1-正常，必填）
  createTime?: string;     // 创建时间（可选）
  updateTime?: string;     // 更新时间（可选）
}

// 合并重复的DiningRecord接口定义，统一属性类型
// types/index.ts 中更新 DiningRecord 接口
export interface DiningRecord {
  recordId: number;
  teacherId: string;
  teacherName: string; // 新增：教师姓名
  teacherDepartment: string; // 新增：教师部门
  merchantId: string;
  merchantName: string; // 新增：商户名称
  merchantAddress: string; // 新增：商户地址
  diningTime: string;
  createTime: string; // 新增：记录创建时间
  amount: number;
  subsidy?: number;
  paymentMethod?: number;
  status: number;
}

export interface SubsidyRemaining {
  remaining: number;
}
export interface Merchant {  // 必须有 export 关键字
  merchantId: string;
  name: string;
  address: string;
  contactPerson: string;
  phone: string;
  status: string;
  password?: string;
}
